Master prompt

Załączone pliki przedstawiają oficjalną klasyfikację zawodów i specjalności w 2023 (więcej znajdziesz tutaj https://psz.praca.gov.pl/rynek-pracy/bazy-danych/klasyfikacja-zawodow-i-specjalnosci). Plik kzis-hiearchy-2023 przedstawia kody zawodów (od 1 do 6 cyfr) według układu hierarchicznego. To są kody, które mnie interesują przy klasyfikacji zawodów. Plik KZis-desc-level-2 określa definicję 2 cyfrowych kodów. Wykorzystaj tę wiedzę przy klasyfikacji ofert pracy do kodów zawodów. Przy odpowiedziach skorzystaj też z oficjalnego słownika dostępnego tutaj: https://psz.praca.gov.pl/rynek-pracy/bazy-danych/klasyfikacja-zawodow-i-specjalnosci/wyszukiwarka-opisow-zawodow/?p_p_id=jobclassificationportlet_WAR_nnkportlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1

Prompt dla 100

Na podstawie wiedzy z projektu (project knowledge) oraz opisu, który tam podałem dotyczącego klasyfikacji zawodów i specjalności 2023 dla każdego rekordu w załączonym pliku zapisz 3 najbardziej prawdopodobne 6 cyfrowe kody zawodu (struktura: kolumna id_ogl, kod1, kod2, kod3). Wynik ma być w postaci pliku csv gdzie każdy wiersz odpowiada wierszowi z załączonego pliku (sample-100-for-lmm)
dict <- fread("../data/kzis-occup-dictionary-2024.csv", colClasses = "character")
head(dict)

Handcoded

evals <- fread("../data-raw/llm/sample-100-for-llm-evaluated.csv", colClasses = "character")
evals[id_ogl %in% evals$id_ogl]

Evaluated

cbop_llm <- fread("../data-raw/llm/sample-100-for-llm-evaluated.csv", colClasses = "character")
cbop_llm |>
  melt(id.vars = "id_ogl") |>
  {\(x) x[, .(llm = list(unique(value))), id_ogl]}() -> cbop_lmm

CBOP

hand[source == "CBOP", .(id_ogl, job.title, job.description)] |> 
  unique() -> for_eval_cbop

fwrite(x = for_eval_cbop, file = "../data-raw/llm/sample-cbop-for-llm.csv")

Compare to 100

Evaluated by Claude

compare to automatic

for_evaluation[kody_n == 1][, .(overlap1=substr(kody[[1]],1,1) == substr(kod1,1,1),
                                overlap2=substr(kody[[1]],1,1) %in% substr(c(kod1,kod2),1,1),
                                overlap3=substr(kody[[1]],1,1) %in% substr(c(kod1,kod2, kod3),1,1)), id_ogl] |>
  {\(x) x[, lapply(.SD, mean), .SDcols = overlap1:overlap3]}()
for_evaluation[, .(overlap1=length(intersect(kody[[1]], kod1)) > 0,
                   overlap2=length(intersect(kody[[1]], c(kod1,kod2))) > 0,
                   overlap3=length(intersect(kody[[1]], c(kod1, kod2,kod3))) > 0), id_ogl]

Whole test data

split -l 200 -d data-raw/llm/test-for-llm.csv test-for-llm
mv test-for-llm* ./data-raw/llm/
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeShyZWFkeGwpCmBgYAoKTWFzdGVyIHByb21wdAoKYGBgClphxYLEhWN6b25lIHBsaWtpIHByemVkc3Rhd2lhasSFIG9maWNqYWxuxIUga2xhc3lmaWthY2rEmSB6YXdvZMOzdyBpIHNwZWNqYWxub8WbY2kgdyAyMDIzICh3acSZY2VqIHpuYWpkemllc3ogdHV0YWogaHR0cHM6Ly9wc3oucHJhY2EuZ292LnBsL3J5bmVrLXByYWN5L2JhenktZGFueWNoL2tsYXN5ZmlrYWNqYS16YXdvZG93LWktc3BlY2phbG5vc2NpKS4gUGxpayBremlzLWhpZWFyY2h5LTIwMjMgcHJ6ZWRzdGF3aWEga29keSB6YXdvZMOzdyAob2QgMSBkbyA2IGN5ZnIpIHdlZMWCdWcgdWvFgmFkdSBoaWVyYXJjaGljem5lZ28uIFRvIHPEhSBrb2R5LCBrdMOzcmUgbW5pZSBpbnRlcmVzdWrEhSBwcnp5IGtsYXN5ZmlrYWNqaSB6YXdvZMOzdy4gUGxpayBLWmlzLWRlc2MtbGV2ZWwtMiBva3JlxZtsYSBkZWZpbmljasSZIDIgY3lmcm93eWNoIGtvZMOzdy4gV3lrb3J6eXN0YWogdMSZIHdpZWR6xJkgcHJ6eSBrbGFzeWZpa2Fjamkgb2ZlcnQgcHJhY3kgZG8ga29kw7N3IHphd29kw7N3LiBQcnp5IG9kcG93aWVkemlhY2ggc2tvcnp5c3RhaiB0ZcW8IHogb2ZpY2phbG5lZ28gc8WCb3duaWthIGRvc3TEmXBuZWdvIHR1dGFqOiBodHRwczovL3Bzei5wcmFjYS5nb3YucGwvcnluZWstcHJhY3kvYmF6eS1kYW55Y2gva2xhc3lmaWthY2phLXphd29kb3ctaS1zcGVjamFsbm9zY2kvd3lzenVraXdhcmthLW9waXNvdy16YXdvZG93Lz9wX3BfaWQ9am9iY2xhc3NpZmljYXRpb25wb3J0bGV0X1dBUl9ubmtwb3J0bGV0JnBfcF9saWZlY3ljbGU9MCZwX3Bfc3RhdGU9bm9ybWFsJnBfcF9tb2RlPXZpZXcmcF9wX2NvbF9pZD1jb2x1bW4tMSZwX3BfY29sX2NvdW50PTEKYGBgCgpQcm9tcHQgZGxhIDEwMAoKYGBgCk5hIHBvZHN0YXdpZSB3aWVkenkgeiBwcm9qZWt0dSAocHJvamVjdCBrbm93bGVkZ2UpIG9yYXogb3Bpc3UsIGt0w7NyeSB0YW0gcG9kYcWCZW0gZG90eWN6xIVjZWdvIGtsYXN5ZmlrYWNqaSB6YXdvZMOzdyBpIHNwZWNqYWxub8WbY2kgMjAyMyBkbGEga2HFvGRlZ28gcmVrb3JkdSB3IHphxYLEhWN6b255bSBwbGlrdSB6YXBpc3ogMyBuYWpiYXJkemllaiBwcmF3ZG9wb2RvYm5lIDYgY3lmcm93ZSBrb2R5IHphd29kdSAoc3RydWt0dXJhOiBrb2x1bW5hIGlkX29nbCwga29kMSwga29kMiwga29kMykuIFd5bmlrIG1hIGJ5xIcgdyBwb3N0YWNpIHBsaWt1IGNzdiBnZHppZSBrYcW8ZHkgd2llcnN6IG9kcG93aWFkYSB3aWVyc3pvd2kgeiB6YcWCxIVjem9uZWdvIHBsaWt1IChzYW1wbGUtMTAwLWZvci1sbW0pCmBgYAoKCmBgYHtyfQpkaWN0IDwtIGZyZWFkKCIuLi9kYXRhL2t6aXMtb2NjdXAtZGljdGlvbmFyeS0yMDI0LmNzdiIsIGNvbENsYXNzZXMgPSAiY2hhcmFjdGVyIikKaGVhZChkaWN0KQpgYGAKCgpIYW5kY29kZWQgCgpgYGB7cn0KaGFuZCA8LSByZWFkX2V4Y2VsKCIuLi9kYXRhLXJhdy9oYW5kLWNvZGVkLnhsc3giKSB8PiBzZXREVCgpCmBgYAoKYGBge3J9CmhhbmRbaWRfb2dsICVpbiUgY29tbW9uMTAwJGlkX3VuaXQsIC4oaWRfb2dsLCBqb2IudGl0bGUsIGpvYi5kZXNjcmlwdGlvbildIHw+IAogIHVuaXF1ZSgpIC0+IGZvcl9ldmFsCmBgYAoKYGBge3J9CmV2YWxzIDwtIGZyZWFkKCIuLi9kYXRhLXJhdy9sbG0vc2FtcGxlLTEwMC1mb3ItbGxtLWV2YWx1YXRlZC5jc3YiLCBjb2xDbGFzc2VzID0gImNoYXJhY3RlciIpCmV2YWxzW2lkX29nbCAlaW4lIGV2YWxzJGlkX29nbF0KYGBgCgpFdmFsdWF0ZWQKYGBge3J9CmNib3BfbGxtIDwtIGZyZWFkKCIuLi9kYXRhLXJhdy9sbG0vc2FtcGxlLTEwMC1mb3ItbGxtLWV2YWx1YXRlZC5jc3YiLCBjb2xDbGFzc2VzID0gImNoYXJhY3RlciIpCmNib3BfbGxtIHw+CiAgbWVsdChpZC52YXJzID0gImlkX29nbCIpIHw+CiAge1woeCkgeFssIC4obGxtID0gbGlzdCh1bmlxdWUodmFsdWUpKSksIGlkX29nbF19KCkgLT4gY2JvcF9sbW0KYGBgCgpDQk9QCgpgYGB7cn0KaGFuZFtzb3VyY2UgPT0gIkNCT1AiLCAuKGlkX29nbCwgam9iLnRpdGxlLCBqb2IuZGVzY3JpcHRpb24pXSB8PiAKICB1bmlxdWUoKSAtPiBmb3JfZXZhbF9jYm9wCgpmd3JpdGUoeCA9IGZvcl9ldmFsX2Nib3AsIGZpbGUgPSAiLi4vZGF0YS1yYXcvbGxtL3NhbXBsZS1jYm9wLWZvci1sbG0uY3N2IikKYGBgCgpDb21wYXJlIHRvIDEwMAoKRXZhbHVhdGVkIGJ5IENsYXVkZQpgYGB7cn0KbG1tX2V2YWxzIDwtIGZyZWFkKCIuLi9kYXRhLXJhdy9sbG0vc2FtcGxlLTEwMC1mb3ItbGxtLWV2YWx1YXRlZC5jc3YiLCBjb2xDbGFzc2VzID0gImNoYXJhY3RlciIpCiNsbW1fZXZhbHMgfD4KICBtZWx0KGlkLnZhcnMgPSAiaWRfb2dsIikgfD4KICB7XCh4KSB4WywgLihsbG0gPSBsaXN0KHVuaXF1ZSh2YWx1ZSkpKSwgaWRfb2dsXX0oKSAtPiBsbW1fZXZhbHMKYGBgCgojIyBjb21wYXJlIHRvIGF1dG9tYXRpYyAKCmBgYHtyfQpoYW5kW2lkX29nbCAlaW4lIGNvbW1vbjEwMCRpZF91bml0LCAuKGlkX29nbCwga29kX3phd29kdSwga29kX3phd29kdTIsIHBvc3NpYmxlX2NvZGVzKV0gfD4KICBtZWx0KGlkLnZhcnMgPSAiaWRfb2dsIiwgdmFsdWUudmFyID0gImtvZCIpIHw+CiAgbmEub21pdCgpIHw+CiAge1woeCkgeFssIC4oa29keSA9IGxpc3QodW5pcXVlKHZhbHVlKSksIGtvZHlfbiA9IGxlbmd0aCh1bmlxdWUodmFsdWUpKSksIGlkX29nbF19KCkgfD4KICBtZXJnZSh4ID0gXywgCiAgICAgICAgeSA9IGxtbV9ldmFscywKICAgICAgICBieSA9ICJpZF9vZ2wiKSAtPiBmb3JfZXZhbHVhdGlvbgpgYGAKCgpgYGB7cn0KZm9yX2V2YWx1YXRpb25ba29keV9uID09IDFdWywgLihvdmVybGFwMT1rb2R5W1sxXV0gPT0ga29kMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwMj1rb2R5W1sxXV0gJWluJSBjKGtvZDEsa29kMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcDM9a29keVtbMV1dICVpbiUgYyhrb2QxLGtvZDIsIGtvZDMpKSwgaWRfb2dsXSB8PgogIHtcKHgpIHhbLCBsYXBwbHkoLlNELCBtZWFuKSwgLlNEY29scyA9IG92ZXJsYXAxOm92ZXJsYXAzXX0oKQpgYGAKCmBgYHtyfQpmb3JfZXZhbHVhdGlvbltrb2R5X24gPT0gMV1bLCAuKG92ZXJsYXAxPXN1YnN0cihrb2R5W1sxXV0sMSwxKSA9PSBzdWJzdHIoa29kMSwxLDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXAyPXN1YnN0cihrb2R5W1sxXV0sMSwxKSAlaW4lIHN1YnN0cihjKGtvZDEsa29kMiksMSwxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwMz1zdWJzdHIoa29keVtbMV1dLDEsMSkgJWluJSBzdWJzdHIoYyhrb2QxLGtvZDIsIGtvZDMpLDEsMSkpLCBpZF9vZ2xdIHw+CiAge1woeCkgeFssIGxhcHBseSguU0QsIG1lYW4pLCAuU0Rjb2xzID0gb3ZlcmxhcDE6b3ZlcmxhcDNdfSgpCmBgYAoKYGBge3J9CmZvcl9ldmFsdWF0aW9uWywgLihvdmVybGFwMT1sZW5ndGgoaW50ZXJzZWN0KGtvZHlbWzFdXSwga29kMSkpID4gMCwKICAgICAgICAgICAgICAgICAgIG92ZXJsYXAyPWxlbmd0aChpbnRlcnNlY3Qoa29keVtbMV1dLCBjKGtvZDEsa29kMikpKSA+IDAsCiAgICAgICAgICAgICAgICAgICBvdmVybGFwMz1sZW5ndGgoaW50ZXJzZWN0KGtvZHlbWzFdXSwgYyhrb2QxLCBrb2QyLGtvZDMpKSkgPiAwKSwgaWRfb2dsXQpgYGAKCldob2xlIHRlc3QgZGF0YQoKYGBge3J9CnRlc3RfZGF0YSA8LSBmcmVhZCgiLi4vZGF0YS90cmFpbi10ZXN0L3Rlc3QtZGF0YS0yMDI0LnRhci5neiIsIGNvbENsYXNzZXMgPSAiY2hhcmFjdGVyIikKdGVzdF9kYXRhW3NvdXJjZSAlaW4lIGMoImhhbmQiLCAiaGFuZDFrIiksIC4oaWQ9MTouTiwgZGVzYyldIHw+IAogIGZ3cml0ZShmaWxlID0gIi4uL2RhdGEtcmF3L2xsbS90ZXN0LWZvci1sbG0uY3N2IikKYGBgCgpgYGB7YmFzaH0Kc3BsaXQgLWwgMjAwIC1kIGRhdGEtcmF3L2xsbS90ZXN0LWZvci1sbG0uY3N2IHRlc3QtZm9yLWxsbQptdiB0ZXN0LWZvci1sbG0qIC4vZGF0YS1yYXcvbGxtLwpgYGAKCgo=